package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import cn.itcast.web.controller.BaseController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/company")
// 字节码中自动生成：
// private static final Logger log = LoggerFactory.getLogger(CompanyController.class);
@Slf4j
public class CompanyController extends BaseController {

    @Reference
    private CompanyService companyService;
    //private Log log = LogFactory.getLog(CompanyController.class);

    /**
     * 企业列表
     * 请求路径：http://localhost:8080/company/list
     * 响应路径：/WEB-INF/pages/company/company-list.jsp
     */
    @RequestMapping("/list")
    public String list(
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "5") Integer pageSize
    ) {
        log.info("执行查询企业列表:");
        PageInfo<Company> pageInfo = companyService.findByPage(pageNum, pageSize);

        request.setAttribute("pageInfo", pageInfo);
        return "company/company-list";
    }
    /**
     * 企业添加，进入添加页面
     * 功能入口：company-list.jsp点击新建
     * 请求地址：http://localhost:8080/company/toAdd
     * 响应地址：/WEB-INF/pages/company/company-add.jsp
     */
    @RequestMapping("/toAdd")
    public String toAdd(){
        return "company/company-add";
    }

    /**
     * 企业添加、修改
     * 请求地址：http://localhost:8080/company/edit
     * 请求数据：封装为Company对象
     * 响应结果：添加成功，重定向到列表，重新查询显示添加的数据
     */
    @RequestMapping("/edit")
    public String edit(Company company){
        // 判断：根据id是否为空判断执行添加还是修改
        if (StringUtils.isEmpty(company.getId())) {
            // 添加
            companyService.save(company);
        } else {
            // 修改
            companyService.update(company);
        }

        return "redirect:/company/list";
    }

    /**
     * 进入添加页面
     * 请求地址：http://localhost:8080/company/toUpdate.do?id=5
     * 响应地址: /WEB-INF/pages/company/company-update.jsp
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id,Model model){
        // 根据id查询
        Company company = companyService.findById(id);
        // 保存
        model.addAttribute("company",company);
        return "company/company-update";
    }

    /**
     * 删除
     * 请求地址：http://localhost:8080/company/delete.do?id=9
     * 响应地址：删除后，重定向到列表
     */
    @RequestMapping("/delete")
    public String delete(String id){
        // 删除
        companyService.delete(id);
        return "redirect:/company/list";
    }
}
